/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Principal;

import Data.Enemigo.ManejoEnemigo;
import Data.Jugador;
import Data.Nivel;
import Enemigo.lex_enemigo;
import Enemigo.lex_enemigo1;
import Enemigo.parserenemigo;
import Enemigo.parserenemigo1;
import Jugador.lex_jugador;
import Jugador.parserjugador;
import Nivel.lex_nivel;
import Nivel.parsernivel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import org.apache.log4j.PropertyConfigurator;

/**
 *
 * @author REI
 */
public class Compilacion {
    
    
    public Nivel compilarNivel(File file)
    {
        PropertyConfigurator.configure("log4j.properties");
        Nivel nivel = null;
        parsernivel parser;
        try {
            parser = new parsernivel(new lex_nivel(new FileInputStream(file)));
            parser.parse();
            
            if(parser.list.estaVacia())
            {
                nivel = parser.nivel;
                return nivel;
            }
            else
            {
                JOptionPane.showMessageDialog(null,"Existe errores en el nivel cargado");
                try {
                        Process proceso = Runtime.getRuntime().exec("explorer Errores Nivel.html");
                    } catch (Exception eoli) {
                    }
                
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return nivel;
    }
    
    public ManejoEnemigo compilarEnemigo(File file)
    {
        PropertyConfigurator.configure("log4j.properties");
        ManejoEnemigo enemigo = null;
        parserenemigo parser;
        try {
            parser = new parserenemigo(new lex_enemigo(new FileInputStream(file)));
            parser.parse();
            
            if(parser.list.estaVacia())
            {
                parserenemigo1 parser2 = new parserenemigo1(new lex_enemigo1(new FileInputStream(file)));
                parser2.enemigo = parser.enemigo; 
                
                parser2.parse();
                
                if(parser2.list.estaVacia())
                {
                    enemigo = parser2.enemigo;
                    enemigo.setNombre(file.getName());
                    return enemigo;
                }
                
            }
            else
            {
                JOptionPane.showMessageDialog(null,"Existe errores en el archivo de enemigo cargado");
                try {
                        Process proceso = Runtime.getRuntime().exec("explorer Errores Enemigo.html");
                    } catch (Exception eoli) {
                    }
                
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return enemigo;
    }
    
    public Jugador compilarJugador(File file)
    {
        PropertyConfigurator.configure("log4j.properties");
        Jugador jugador = null;
        parserjugador parser;
        try {
            parser = new parserjugador(new lex_jugador(new FileInputStream(file)));
            parser.parse();
            
            if(parser.list.estaVacia())
            {
                jugador = parser.jugador;
                return jugador;
            }
            else
            {
                JOptionPane.showMessageDialog(null,"Existe errores en el archivo de jugador cargado");
                try {
                        Process proceso = Runtime.getRuntime().exec("explorer Errores Jugador.html");
                    } catch (Exception eoli) {
                    }
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(Compilacion.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return jugador;
    }
    
}
